package delphorm.web.aspect;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import org.springframework.aop.MethodBeforeAdvice;

import delphorm.entite.personne.Utilisateur;
import delphorm.web.exception.SecuriteException;


public class VerifierSupprimerUtilisateur implements MethodBeforeAdvice, Verif {

	
	public void before(Method method, Object[] arguments, Object target) 
			throws Throwable {
		Object[] args = new Object[2];
		args[0] = ((HttpServletRequest)arguments[0]).getSession().getAttribute("utilisateur");
		args[1] = new Long(Long.parseLong((String)((HttpServletRequest)arguments[0]).getParameter("idutilisateur")));
						 
		if(!doVerif(args))
			throw new SecuriteException("exception.supprimerutilisateur.pasledroit");
		
	}
	
	public boolean doVerif(Object[] objects) {
		Utilisateur utilisateur = (Utilisateur)objects[0];
		Long idUtilisateur = (Long)objects[1];
		
		//l'utilisateur se supprime lui-même
		if(utilisateur.getId().equals(idUtilisateur))
			return true;
		
		//il a le droit
		else if(utilisateur.getDroitsGeneraux().getSupprimerTousUtilisateurs().booleanValue() == true)
			return true;
		
		return false;
	}

	

}
